package ar.com.algotres.tpdos.model.aviones;

import ar.com.algotres.tpdos.estrategia.aterrizaje.EstrategiaSimple;
import ar.com.algotres.tpdos.model.aterrizable.CaracteristicasPista;
import ar.com.algotres.tpdos.model.aterrizable.Pista;
import ar.com.algotres.tpdos.model.controlador.TorreDeControl;
import ar.com.algotres.tpdos.model.fisica.Movimiento;
import ar.com.algotres.tpdos.model.fisica.Posicion;

public class AvionSimple extends Avion {

	public AvionSimple(TorreDeControl torre, Movimiento movimiento,Posicion posicion, CaracteristicasAvion caracteristicas) {
		super(torre, movimiento, new EstrategiaSimple(),posicion, caracteristicas);
	}
	/**
	 * Se utiliza para testear metodo privado en superclase abstracta
	 * */
	
	private int getDesplazamientoCorrectoEnX(Posicion posicionFinal,int desplazamientoX){
		return this.esDesplazamientoCorrectoX(posicionFinal, desplazamientoX) ? desplazamientoX : posicionFinal.getX();
	}

	private int getDesplazamientoCorrectoEnY(Posicion posicionFinal,int desplazamientoY){
		return this.esDesplazamientoCorrectoY(posicionFinal, desplazamientoY) ? desplazamientoY : posicionFinal.getY();
	}

	private Boolean esDesplazamientoCorrectoX(Posicion posicionFinal,int desplazamientoX ){
		
		return desplazamientoX <= posicionFinal.getX() ;
	}
	
	private Boolean esDesplazamientoCorrectoY(Posicion posicionFinal, int desplazamientoY){
		
		return desplazamientoY <= posicionFinal.getY();
	}
	@Override
	public boolean puedeAterrizarEnPista(Pista pista) {
		CaracteristicasPista caracteristicasPista = pista.getCaracteristicasPista();
		return caracteristicasPista.getAdmiteAviones() 
				&& (caracteristicasPista.getPesoMaximoAdmitido() > getCaracteristicas().getPeso());
	}

}
